package com.hzhk.happyrent.utils.glide;

import android.annotation.SuppressLint;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;
import android.widget.LinearLayout;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.request.animation.GlideAnimation;
import com.bumptech.glide.request.target.SimpleTarget;
import com.hzhk.happyrent.R;

import jp.wasabeef.glide.transformations.CropTransformation;
import jp.wasabeef.glide.transformations.RoundedCornersTransformation;


public class ShowImageUtils {

    /**
     * (1)
     * 显示图片Imageview
     *
     * @param context  上下文
     * @param url      图片链接
     * @param imgeview 组件
     */
    public static void showImageView(Context context,
                                     ImageView imgeview,String url) {
        Glide.with(context).load(url)// 加载图片
                .crossFade()// 设置淡入淡出效果，默认300ms，可以传参
                .diskCacheStrategy(DiskCacheStrategy.RESULT)// 缓存修改过的图片
                .into(imgeview);
    }
    /**
     * (2)
     * 显示图片Imageview
     *
     * @param context  上下文
     * @param url      图片链接
     * @param imgeview 组件
     */
    public static void showImageView(Context context,
                                     ImageView imgeview,String url,int loadingImage) {
        Glide.with(context).load(url)// 加载图片
                .placeholder(loadingImage)
                .error(loadingImage)// 设置错误图片
                .crossFade()// 设置淡入淡出效果，默认300ms，可以传参
                .diskCacheStrategy(DiskCacheStrategy.RESULT)// 缓存修改过的图片
                .into(imgeview);
    }

    /**
     * （3）
     * 显示图片 圆角显示  ImageView
     *
     * @param context  上下文
     * @param url      图片链接
     * @param imgeview 组件
     */
    public static void showImageViewToCircleNoPlaceHolder(Context context,
                                             String url, ImageView imgeview,int radius) {
        Glide.with(context)
                // 加载图片
                .load(url)
                // 设置淡入淡出效果，默认300ms，可以传参
                .crossFade()
                .bitmapTransform(new RoundedCornersTransformation(context,radius,0, RoundedCornersTransformation.CornerType.ALL))
                .diskCacheStrategy(DiskCacheStrategy.RESULT)// 缓存修改过的图片
                .into(imgeview);

    }

    /**
     * （4）
     * 显示图片 圆形头像显示 无占位图 ImageView
     *
     * @param context  上下文
     * @param url      图片链接
     * @param imgeview 组件
     */
    public static void showImageViewToCircleNoPlaceHolder(Context context,
                                                          Uri url, ImageView imgeview, int radius) {
        Glide.with(context).load(url)
                // 加载图片
                .crossFade()
                // 设置淡入淡出效果，默认300ms，可以传参
                .bitmapTransform(new RoundedCornersTransformation(context,radius,0, RoundedCornersTransformation.CornerType.ALL))
                .diskCacheStrategy(DiskCacheStrategy.RESULT)// 缓存修改过的图片
                .into(imgeview);

    }

    /**
     * （5）
     * 显示图片 圆形头像  ImageView 设置加载中和错误图片
     *
     * @param context  上下文
     * @param url      图片链接
     * @param imgeview 组件
     */
    public static void showImageViewToCircleHolder(Context context,
                                                   String url, ImageView imgeview,int loadingImage) {
        Glide.with(context).load(url)
                .error(loadingImage)// 设置错误图片
                .crossFade()// 设置淡入淡出效果，默认300ms，可以传参
                .bitmapTransform(new GlideCircleTransform(context))
                .diskCacheStrategy(DiskCacheStrategy.RESULT)// 缓存修改过的图片
                .into(imgeview);
    }
    /**
     * （6）
     * 获取到Bitmap 高斯模糊         RelativeLayout
     *
     * @param context
     * @param errorimg
     * @param url
     * @param bgLayout
     */

    public static void showImageViewBlur(final Context context,
                                         String url, int errorimg, final LinearLayout bgLayout) {
        Glide.with(context).load(url).asBitmap()
                // 设置错误图片
                .error(errorimg)
                // 缓存修改过的图片
                .diskCacheStrategy(DiskCacheStrategy.RESULT)
                .transform(new GlideBlurTransformation(context),new CropTransformation(context, bgLayout.getWidth(),bgLayout.getHeight() , CropTransformation.CropType.TOP))// 高斯模糊处理
                // 设置占位图

                .into(new SimpleTarget<Bitmap>() {

                    @SuppressLint("NewApi")
                    @Override
                    public void onResourceReady(Bitmap loadedImage,
                                                GlideAnimation<? super Bitmap> arg1) {
                        BitmapDrawable bd = new BitmapDrawable(loadedImage);
                        bgLayout.setBackground(bd);
                    }

                    @Override
                    public void onLoadFailed(Exception e, Drawable errorDrawable) {
                        super.onLoadFailed(e, errorDrawable);
                        bgLayout.setBackgroundDrawable(errorDrawable);
                    }

                });

    }
}
